/**
 * @author wcj
 * @Date 2021/7/21 16:03
 * @Version 1.0
 */
public class StackAllocation {

    static class Test {
        private int id = 3;
        private String name = "wcj";
    }

    public static void test() {
        Test test = new Test();
    }

    /**
     * -server -Xms10m -Xmx10m -XX:+PrintGC -XX:+DoEscapeAnalysis -XX:+UseTLAB -XX:+EliminateAllocations
     * 栈上替换，JVM的一种优化技术，就是将线程的私有对象打散分配到栈上，其分配速度快，并且执行完成之后会自动进行销毁，无需GC，性能高
     * 打散需要依赖于标量替换技术，同时还需要开启分析逃逸(查看当前对象是否逃逸出栈帧的范围，如果没有逃逸出去，可以进行栈上分配)
     *
     * @param args
     */
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000000000; i++) {
            test();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("时间为:" + (endTime - startTime));
    }
}
